<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>原生的原型</title>
</head>
<body>
<script>

    function Foo() {
        this.name = "alice"
        /**
         * 上面的这行代码等等同于下面这行代码，所以说类属性和实例对象的属性不互通
         * 这也揭示了构造函数的内部原理
         * */
        /*  this ={}
            this.name = 'Alice'
            return this*/
    }

    /*
    * 但是不管是通过构造函数对象还是通过实例对象都可以访问到原型上的属性和方法
    * 只不过通过构造函数对象访问原型上的属性要通过.prototype.属性名
    * */

    Foo.prototype.getName = function () {
        return this.name
    }

    let foo = new Foo()
    /*直接访问*/
    foo.getName()
    //间接访问
    Foo.prototype.getName()


</script>
</body>
</html>